package com.glut.campusrepair.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/messages")
public class MessageController {

    private static final Map<String, String> AUTO_REPLIES = new HashMap<>();

    static {
        AUTO_REPLIES.put("什么是桂林理工大学", "桂林理工大学是中央与地方共建、以广西壮族自治区管理为主的高校。学校源于1956年原国家重工业部在广西组建的桂林地质学校，历经五改归属、十易校名的发展历程，其中，1978年更名为桂林冶金地质学院，1993年更名为桂林工学院，2009年正式更名为桂林理工大学。");
        AUTO_REPLIES.put("如何联系我们", "您可以通过电话、邮件或在线客服与我们联系。");
        AUTO_REPLIES.put("维修人员上班时间", "我们的维修人员的上班时间是周一至周五的上午9点到下午5点。");
        AUTO_REPLIES.put("如何申请报修", "您可以通过我们的在线报修系统提交报修申请，或者拨打我们的报修热线：123-456-7890。");
        AUTO_REPLIES.put("如何查看报修进度", "您可以在我们的报修系统中登录您的账号，然后在报修记录中查看您的报修进度。");
        AUTO_REPLIES.put("报修需要多长时间", "报修处理的时间通常是1-3个工作日，具体时间取决于问题的复杂程度。");
        AUTO_REPLIES.put("报修费用如何支付", "您可以在线支付报修费用，或者在维修人员上门服务时支付。");
        AUTO_REPLIES.put("报修是否有保修期", "是的，我们的维修服务提供30天的保修期，保修期内如果出现同样的问题可以免费维修。");
        AUTO_REPLIES.put("紧急报修如何处理", "对于紧急报修，请直接拨打我们的紧急报修电话：987-654-3210，我们会优先处理您的报修请求。");
        AUTO_REPLIES.put("如何取消报修申请", "您可以在报修系统中找到您的报修记录，并点击取消按钮来取消您的报修申请。");
        AUTO_REPLIES.put("报修后是否会有反馈", "是的，我们会在报修完成后通过短信或者邮件向您反馈报修结果。");
        AUTO_REPLIES.put("如何评价报修服务", "您可以在我们的报修系统中对维修人员的服务进行评价，您的反馈对我们非常重要。");
        AUTO_REPLIES.put("报修系统如何注册", "您可以在报修系统的注册页面填写您的个人信息进行注册。");
        AUTO_REPLIES.put("如何修改个人信息", "登录您的账号后，您可以在个人中心中修改您的个人信息。");
        AUTO_REPLIES.put("忘记密码怎么办", "您可以在登录页面点击“忘记密码”，然后根据提示找回您的密码。");
    }

    @PostMapping("/send")
    public Map<String, String> sendMessage(@RequestBody Map<String, String> messageRequest) {
        String message = messageRequest.get("message");
        String reply = AUTO_REPLIES.entrySet().stream()
                .filter(entry -> message.contains(entry.getKey()))
                .map(Map.Entry::getValue)
                .findFirst()
                .orElse("对不起，我不知道如何回答这个问题。");

        Map<String, String> response = new HashMap<>();
        response.put("reply", reply);
        return response;
    }
}
